package com.example.mo.controller;

import com.example.mo.Entity.Product;
import com.example.mo.Entity.SaResult;
import com.example.mo.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private ProductService productService;


    //  http://localhost:8082/product/list
    // 查询所有商品
    @GetMapping("/list")
    public SaResult list() {
        List<Product> list = productService.list();
        return SaResult.data(list);
    }

    // 查询单一商品接口
    // http://localhost:8082/product/query
    @GetMapping("/query")
    public SaResult querySingleProduct(@RequestParam("productId") Integer productId) {
        if (productId == null) {
            return SaResult.error("请求中缺少 productId 参数");
        }
        Product product = productService.getById(productId);
        return product != null ? SaResult.data(product) : SaResult.error("商品不存在");
    }

    //http://localhost:8082/product/add
    // 添加商品（需前端传JSON格式的Product对象）
    @PostMapping("/add")
    public SaResult add(@RequestBody Product product) {
        // 新增：校验 isAvailable 是否为 0 或 1（允许 null，即使用数据库默认值 1）
        if (product.getIsAvailable() != null && !product.getIsAvailable().equals(0) && !product.getIsAvailable().equals(1)) {
            return SaResult.error("isAvailable 只能为 0（下架）或 1（在售）");
        }
        boolean saveSuccess = productService.save(product);
        return saveSuccess ? SaResult.ok("添加成功") : SaResult.error("添加失败");
    }

   // http://localhost:8082/product/update
    // 更新商品（需前端传包含productId的JSON对象）
    @PostMapping("/update")
    public SaResult update(@RequestBody Product product) {
        if (product == null) {
            return SaResult.error("商品数据不能为空");
        }
        // 新增：校验 isAvailable 是否为 0 或 1（允许 null，即不更新该字段）
        if (product.getIsAvailable() != null && !product.getIsAvailable().equals(0) && !product.getIsAvailable().equals(1)) {
            return SaResult.error("isAvailable 只能为 0（下架）或 1（在售）");
        }
        boolean updateSuccess = productService.updateById(product);
        return updateSuccess ? SaResult.ok("更新成功") : SaResult.error("更新失败");
    }

    // c
    // 删除商品（根据ID）
    @PostMapping("/delete")
    public SaResult delete(@RequestParam("productId") Integer productId) {
        if (productId == null) {
            return SaResult.error("请求中缺少 productId 参数");
        }
        boolean deleteSuccess = productService.removeById(productId);
        return deleteSuccess ? SaResult.ok("删除成功") : SaResult.error("删除失败");
    }
}
